<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>7.函数参数与arguments</title>
</head>

<body>
  <button id="hd">后盾人</button>
  <script>
    function event () {
      alert(this.innerHTML);
    }
    document.getElementById('hd').addEventListener('click', event);
    // 函数可以做为参数传递
    function hd (a) {
      return a <= 3;
    }
    let arr = [1, 2, 3, 4, 5, 6, 7].filter(hd);
    console.log(arr);
    // 匿名函数+定时器
    var i = 0;
    function cms () {
      console.log(++i);
    }
    setInterval(cms, 1000);


    // arguments 是函数获得到所有参数集合，下面是使用 arguments 求和的例子
    function sum () {
      // arguments是伪数组，不能直接使用数组方法
      console.log(arguments.length);
      let total = 0;
      for (let i = 0; i < arguments.length; i++) {
        total += arguments[i];
      }
      return total;
      // 可以用... 语法转数组操作
      // return [...arguments].reduce((a, b)=> a+b)

    }
    console.log(sum(1, 23, 3, 43, 45, 53));

    // 更建议直接使用... 语法接收参数
    function sum (...args) {
      return args.reduce((a, b) => a + b);
    }
    console.log(sum(1, 23, 3, 43, 45, 53));

  </script>
</body>

</html>